From 0bad0da66952d7b02ee57044092cb5c273010ead Mon Sep 17 00:00:00 2001 From: "robertlipe@gmail.com" Date: Sun, 27 Jan 2013 05:09:20 +0000 Subject: [PATCH] Mechanical changes in date handling that made it harm to shim a class "merely" overloading operators from time_t into a real class into place. git-svn-id: http://gpsbabel.googlecode.com/svn/trunk@4259 f51c46e8-681c-474f-0cfe-069cfd0219fb --- gpsbabel/compegps.cc | 5 +++-- gpsbabel/destinator.cc | 4 ++-- gpsbabel/exif.cc | 4 +++- gpsbabel/garmin_txt.cc | 14 ++++++++++---- gpsbabel/igc.cc | 5 ++++- gpsbabel/jtr.cc | 4 +++- gpsbabel/magproto.cc | 3 ++- gpsbabel/mapasia.cc | 3 ++- gpsbabel/pathaway.cc | 3 ++- gpsbabel/pcx.cc | 3 ++- gpsbabel/skyforce.cc | 3 ++- gpsbabel/stmwpp.cc | 3 ++- 12 files changed, 37 insertions(+), 17 deletions(-) diff --git a/gpsbabel/compegps.cc b/gpsbabel/compegps.cc index 196303038..66a29e592 100644 --- a/gpsbabel/compegps.cc +++ b/gpsbabel/compegps.cc @@ -560,7 +560,6 @@ static void write_trkpt_cb(const waypoint* wpt) { char buff[128]; - struct tm tm; if ((curr_index != target_index) || (wpt == NULL)) { return; @@ -569,7 +568,9 @@ write_trkpt_cb(const waypoint* wpt) buff[0] = '\0'; if (wpt->creation_time != 0) { - tm = *gmtime(&wpt->creation_time); + const time_t tt = wpt->creation_time; + struct tm tm = *gmtime(&tt); + strftime(buff, sizeof(buff), "%d-%b-%y %H:%M:%S", &tm); strupper(buff); } else { diff --git a/gpsbabel/destinator.cc b/gpsbabel/destinator.cc index 116c0c44e..e8f63d222 100644 --- a/gpsbabel/destinator.cc +++ b/gpsbabel/destinator.cc @@ -436,8 +436,8 @@ destinator_trkpt_disp(const waypoint* wpt) struct tm tm; double time; int date; - - tm = *gmtime(&wpt->creation_time); + const time_t ct = wpt->creation_time; + tm = *gmtime(&ct); tm.tm_mon += 1; tm.tm_year -= 100; date = ((int)tm.tm_mday * 10000) + ((int)tm.tm_mon * 100) + tm.tm_year; diff --git a/gpsbabel/exif.cc b/gpsbabel/exif.cc index ae9640563..848c76d08 100644 --- a/gpsbabel/exif.cc +++ b/gpsbabel/exif.cc @@ -1488,7 +1488,9 @@ exif_write(void) struct tm tm; char buf[32]; - tm = *gmtime(&wpt->creation_time); + const time_t tt = wpt->creation_time; + tm = *gmtime(&tt); + tm.tm_year += 1900; tm.tm_mon += 1; diff --git a/gpsbabel/garmin_txt.cc b/gpsbabel/garmin_txt.cc index ada15e5eb..23093a885 100644 --- a/gpsbabel/garmin_txt.cc +++ b/gpsbabel/garmin_txt.cc @@ -1182,8 +1182,11 @@ parse_waypoint(void) GMSD_SETSTR(country, str); GMSD_SETSTR(cc, gt_get_icao_cc(str, wpt->shortname)); break; - case 16: - parse_date_and_time(str, &wpt->creation_time); + case 16: { + time_t ct; + parse_date_and_time(str, &ct); + wpt->creation_time = ct; + } break; case 17: wpt->url = DUPSTR(str); @@ -1296,8 +1299,11 @@ parse_track_waypoint(void) parse_coordinates(str, datum_index, grid_index, &wpt->latitude, &wpt->longitude, MYNAME); break; - case 2: - parse_date_and_time(str, &wpt->creation_time); + case 2: { + time_t ct; + parse_date_and_time(str, &ct); + wpt->creation_time = ct; + } break; case 3: if (parse_distance(str, &x, 1, MYNAME)) { diff --git a/gpsbabel/igc.cc b/gpsbabel/igc.cc index 2bc7dde78..f6aee3384 100644 --- a/gpsbabel/igc.cc +++ b/gpsbabel/igc.cc @@ -690,7 +690,10 @@ static void wr_fix_record(const waypoint* wpt, int pres_alt, int gnss_alt) { struct tm* tm; - if (NULL == (tm = gmtime(&wpt->creation_time))) { + const time_t tt = wpt->creation_time; + tm = gmtime(&tt); + + if (NULL == tm) { fatal(MYNAME ": bad track timestamp\n"); } diff --git a/gpsbabel/jtr.cc b/gpsbabel/jtr.cc index 861928a21..dbeff1bc6 100644 --- a/gpsbabel/jtr.cc +++ b/gpsbabel/jtr.cc @@ -273,7 +273,9 @@ jtr_trkpt_disp_cb(const waypoint* wpt) struct tm tm; if (wpt->creation_time > 0) { - tm = *gmtime(&wpt->creation_time); + const time_t tt = wpt->creation_time; + tm = *gmtime(&tt); + tm.tm_year += 1900; tm.tm_mon += 1; snprintf(sdate, sizeof(sdate), "%02d%02d%02d", tm.tm_mday, tm.tm_mon, tm.tm_year % 100); diff --git a/gpsbabel/magproto.cc b/gpsbabel/magproto.cc index ae3047ed6..6be7a1edd 100644 --- a/gpsbabel/magproto.cc +++ b/gpsbabel/magproto.cc @@ -1442,7 +1442,8 @@ void mag_track_disp(const waypoint* waypointp) ilon = waypointp->longitude; tm = NULL; if (waypointp->creation_time) { - tm = gmtime(&waypointp->creation_time); + const time_t ct = waypointp->creation_time; + tm = gmtime(&ct); if (tm) { hms = tm->tm_hour * 10000 + tm->tm_min * 100 + tm->tm_sec; diff --git a/gpsbabel/mapasia.cc b/gpsbabel/mapasia.cc index 25ab6c633..7c306a9fd 100644 --- a/gpsbabel/mapasia.cc +++ b/gpsbabel/mapasia.cc @@ -241,7 +241,8 @@ tr7_disp_waypt_cb(const waypoint* wpt) } if (wpt->creation_time) { - tm = *gmtime(&wpt->creation_time); + const time_t tt = wpt->creation_time; + tm = *gmtime(&tt); le_write16(&buff[TR7_S_YEAR], tm.tm_year + 1900); buff[TR7_S_MONTH] = tm.tm_mon + 1; diff --git a/gpsbabel/pathaway.cc b/gpsbabel/pathaway.cc index 9a4bc9142..2216e6790 100644 --- a/gpsbabel/pathaway.cc +++ b/gpsbabel/pathaway.cc @@ -689,7 +689,8 @@ static void ppdb_write_wpt(const waypoint *wpt) if (wpt->creation_time != 0) { tmp = str_pool_get(20); - tm = *gmtime(&wpt->creation_time); + const time_t tt = wpt->creation_time; + tm = *gmtime(&tt); strftime(tmp, 20, datefmt, &tm); buff = ppdb_strcat(buff, tmp, NULL, &len); } diff --git a/gpsbabel/pcx.cc b/gpsbabel/pcx.cc index c30ce305e..0f5ca968b 100644 --- a/gpsbabel/pcx.cc +++ b/gpsbabel/pcx.cc @@ -406,7 +406,8 @@ pcx_track_disp(const waypoint *wpt) lon = degrees2ddmm(wpt->longitude); lat = degrees2ddmm(wpt->latitude); - tm = gmtime(&wpt->creation_time); + const time_t ct = wpt->creation_time; + tm = gmtime(&ct); strftime(tbuf, sizeof(tbuf), "%d-%b-%y %H:%M:%S", tm); /* currently ...%T does nothing under Windows */ for (tp = tbuf; *tp; tp++) { diff --git a/gpsbabel/skyforce.cc b/gpsbabel/skyforce.cc index e6e7ae37d..8b2550387 100644 --- a/gpsbabel/skyforce.cc +++ b/gpsbabel/skyforce.cc @@ -176,7 +176,8 @@ skyforce_waypt_disp_cb(const waypoint *wpt) if (global_opts.objective == trkdata) { struct tm tm; - tm = *gmtime(&wpt->creation_time); + const time_t tt = wpt->creation_time; + tm = *gmtime(&tt); strftime(buf + 2, sizeof(buf) - 2, "%d%m%y %H%M%S ", &tm); } else { char *name; diff --git a/gpsbabel/stmwpp.cc b/gpsbabel/stmwpp.cc index df2dbede6..d50b9a6cf 100644 --- a/gpsbabel/stmwpp.cc +++ b/gpsbabel/stmwpp.cc @@ -239,7 +239,8 @@ stmwpp_waypt_cb(const waypoint *wpt) return; } - tm = *gmtime(&wpt->creation_time); + const time_t tt = wpt->creation_time; + tm = *gmtime(&tt); tm.tm_year += 1900; tm.tm_mon++; -- 2.30.2